<?php

namespace maotool\util;

use maotool\object\StrUtil;

/**
 * 月份工具类
 */
class MonthUtil
{

    /**
     * 当前月份 数字形式
     * @return false|string
     */
    public static function current()
    {
        return date('m');
    }

    /**
     * 当前月份 英文缩写
     * @return string|null
     */
    public static function currentShort()
    {
        return WordsUtil::lowerFirst(date('M'));
    }

    /**
     * 当前月份 月份的全名
     * @return string|null
     */
    public static function currentFull()
    {
        return WordsUtil::lowerFirst(date('F'));
    }

    /**
     * 当前周 英文
     * @return string|null
     */
    public static function currentEn()
    {
        return WordsUtil::lowerFirst(date('F'));
    }

    /**
     * 当前月份 中文形式
     * @return string
     */
    public static function currentCn()
    {
        $index = date('n');
        $map = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
        return $map[$index - 1];
    }

    /**
     * 当前月份 映射形式
     * @return string
     */
    public static function currentMap($map = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
    {
        $index = date('n');
        return $map[$index - 1];
    }

    /**
     * 当前月份 数字形式
     * @return false|string
     */
    public static function currentStart($format = 'Y-m-d H:i:s')
    {
        return self::start(date("Y-m-01 00:00:00"), $format);
    }

    /**
     * 当前月份 数字形式
     * @return false|string
     */
    public static function currentEnd($format = 'Y-m-d H:i:s')
    {
        return self::end(date("Y-m-t 00:00:00"), $format);
    }

    /**
     * 当前年份 数字形式
     * @return false|string
     */
    public static function start($date, $format = 'Y-m-d H:i:s')

    {
        return date($format, strtotime(date("Y-m-01", strtotime($date)) . " 00:00:00"));
    }

    /**
     * 当前年份 数字形式
     * @return false|string
     */
    public static function end($date, $format = 'Y-m-d H:i:s')
    {
        return date($format, strtotime(date("Y-m-t", strtotime($date)) . " 23:59:59"));
    }

    /**
     * 月份转换成数字形式
     * @return false|string
     */
    public static function toNumber($date)
    {
        return date('m', strtotime($date));
    }

}